package parte2;

/**
 * Verificador.java
 * Verificadores e validadores de dados específicos
 */
public class Verificador {

    private static final int MIN_CARACTERES_NOME = 2, MIN_NUMEROS_TELEFONE = 8,
            MAX_NUMEROS_TELEFONE = 12, MIN_TAMANHO_EMAIL = 8;
    private static final String PADRAO_EMAIL = "^[a-z+[\\w]{1,}]\\p{@}[a-z+[\\w]{1,}]\\p{.}+";

    /**
     * @param nome O nome a ser validado
     * @return A validade do nome
     */
    protected static boolean nomeValido(String nome) {
        if (nome.length() < MIN_CARACTERES_NOME)
            return false;
        for (Character c : nome.toCharArray())
            if (!Character.isLetter(c) && !Character.isWhitespace(c))
                return false;
        return true;
    }
    
    /**
     * @param telefone O telefone a ser validado
     * @return A validade do telefone
     */
    protected static boolean telefoneValido(String telefone) {
        if (telefone.length() < MIN_NUMEROS_TELEFONE
                || telefone.length() > MAX_NUMEROS_TELEFONE)
            return false;
        for (Character c : telefone.toCharArray())
            if (!Character.isDigit(c)
                    && !(Character.getType(c) == Character.DASH_PUNCTUATION))
                return false;
        return true;
    }
    
    /**
     * INCOMPLETO
     * @param email O email a ser validado
     * @return A validade do email
     */
    protected static boolean emailValido(String email) {
        if (email.length() < MIN_TAMANHO_EMAIL)
            return false;
        return email.matches(PADRAO_EMAIL);
    }
    
    protected static boolean verificaData() {
        return false;
    }
}

